import { defineConfig } from "@tarojs/cli";
const path = require("path");
import envConfig from "./envConfig";

// https://taro-docs.jd.com/docs/next/config#defineconfig-辅助函数
export default defineConfig(async (merge, { command, mode }) => {
  const baseConfig = {
    projectName: "miniprogram",
    date: "2023-10-24",
    designWidth: 750,
    deviceRatio: {
      640: 2.34 / 2,
      750: 1,
      375: 2,
      828: 1.81 / 2,
    },
    plugins: [
      "@tarojs/plugin-sass", // 使用 Sass
      // '@tarojs/plugin-less', // 使用 Less
      // '@tarojs/plugin-stylus', // 使用 Stylus
    ],
    sourceRoot: "src",
    outputRoot: "dist",
    plugins: [
      // "@tarojs/plugin-less", // 使用 Less
    ],
    defineConstants: {},
    copy: {
      patterns: [
        // { from: 'src/thirdPartyComponents', to: 'dist/thirdPartyComponents', }, // 指定需要 copy 的目录
      ],
      options: {},
    },
    framework: "react",
    compiler: "webpack4",
    mini: {
      postcss: {
        pxtransform: {
          enable: true,
          config: {},
        },
        url: {
          enable: true,
          config: {
            limit: 1024, // 设定转换尺寸上限
          },
        },
        cssModules: {
          enable: false, // 默认为 false，如需使用 css modules 功能，则设为 true
          config: {
            namingPattern: "module", // 转换模式，取值为 global/module
            generateScopedName: "[name]__[local]___[hash:base64:5]",
          },
        },
      },
    },

    h5: {
      publicPath: "/",
      staticDirectory: "static",
      output: {
        filename: "js/[name].[hash:8].js",
        chunkFilename: "js/[name].[chunkhash:8].js",
      },
      miniCssExtractPluginOption: {
        ignoreOrder: true,
        filename: "css/[name].[hash].css",
        chunkFilename: "css/[name].[chunkhash].css",
      },
      postcss: {
        autoprefixer: {
          enable: true,
          config: {},
        },
        cssModules: {
          enable: false, // 默认为 false，如需使用 css modules 功能，则设为 true
          config: {
            namingPattern: "module", // 转换模式，取值为 global/module
            generateScopedName: "[name]__[local]___[hash:base64:5]",
          },
        },
      },
    },
    rn: {
      appName: "taroDemo",
      postcss: {
        cssModules: {
          enable: false, // 默认为 false，如需使用 css modules 功能，则设为 true
        },
      },
    },
    alias: {
      "@/components": path.resolve(__dirname, "..", "src/components"),
      "@/server": path.resolve(__dirname, "..", "src/server"),
      "@/assert": path.resolve(__dirname, "..", "src/assert"),
      "@/utils": path.resolve(__dirname, "..", "src/utils"),
      "@/reducers": path.resolve(__dirname, "..", "src/reducers"),
      "@/common": path.resolve(__dirname, "..", "src/common"),
      "@/": path.resolve(__dirname, "..", "src/"),
    },
  };

  return merge({}, baseConfig, envConfig[process.env.NODE_ENV || "prod"]);
});
